package com.chanyachting.emall.serviceImpl;

import java.util.List;

import com.chanyachting.emall.dao.MemberorderservicesDAO;
import com.chanyachting.emall.domain.Member;
import com.chanyachting.emall.domain.Memberorderservices;
import com.chanyachting.emall.util.DateUtil;



/**
 * 会员订购功能服务，业务逻辑处理类
 * @author robert
 *
 */
public class MemberorderservicesBO {
	
	
	private Memberorderservices mos;
	
	
	public MemberorderservicesBO(Memberorderservices mos){
		
		this.mos=mos;
	}
	
	
	
	/**
	 * 检查将添加的功能服务是否重复
	 * @return
	 */
	public boolean checkExists(){
		
		String args[]={String.valueOf(mos.getMemberId()),String.valueOf(mos.getServiceId())};
		
		List<Memberorderservices> list=new MemberorderservicesDAO().find("from Memberorderservices where memberId=? and serviceId=?",args);
		
		if(list!=null && list.size()>0) return true;
		
		return false;
	}
	
	
	/**
	 * 检查会员是否能够执行对应操作
	 * 1.检查会员是否与对应类型的功能服务
	 * 2.检查功能服务是否有效
	 * 3.如果有效，更新功能服务，最后返回true
	 * @param member
	 * @param optionType
	 * @return
	 */
	public static boolean checkMmemberServiceByMemberAndOPType(Member member,String optionType){
		
		List<Memberorderservices> list= Memberorderservices.listByOptionTypeAndActivityAndMemberId(member.getId(), optionType);
		
		if(list==null || list.size()<1) return false;
		
		boolean flag=true;
		
		for(Memberorderservices mo:list){
			
			MemberorderservicesBO mobo=new MemberorderservicesBO(mo);
			
			//检查对应功能服务是否有效
			if(mobo.checkMemberService()){
				
				mobo.executeMemberServicd(); //如果有效，执行功能服务
				
				break;
			}else{
				
				flag=false;
			}
		}
		
		return flag;
	}
	
	
	
	/**
	 * 检查功能服务是否有效
	 * @return
	 */
	public boolean checkMemberService(){
		
		//判断到期时间（如超过时间限制，更新功能状态）， 判断当前状态
		String nowDate=DateUtil.getDate();
		
		//如果当前时间大于到期时间
		if(nowDate.compareTo(mos.getLostDate())>0){
			
			//更新状态，返回 false
			
			mos.setNowState("00");
			
			mos.update();
			
			
		}else{
			
			if(mos.getNowState().equals("01")) return true;
			
		}
		
		return false;
	}
	
	
	/**
	 * 执行对应操作，更新会员功能服务
	 */
	public void executeMemberServicd(){
		
		//执行次数+1 ， 判断限制次数（如超过限制次数，更新功能状态），
		
		int executeTime=mos.getServiceExecuteTime()+1;
		
		//如果限制执行次数
		if(mos.getIfLimitTime().equals("01")){
			
			if(executeTime==mos.getServiceLimitTime()){
				
				mos.setNowState("00");  //达到限制次数，功能关闭
			}
		}
		
		mos.setServiceExecuteTime(executeTime);
		
		mos.update(); //执行更新
		
	}
	
	
	

}
